if __name__ == '__main__':
    """
    习题1
    输入一个字符串列表，返回同时满足以下两个条件的字符串的个数：
    1.字符串长度大等于2
    2.字符串的第一个字符等于最后一个字符
    """


    def li(li):
        j = 0
        for i in li:
            if len(i) >= 2 and i[0] == i[-1]:
                j += 1
        return j


    # print(li(["asda", "xdfg", "asef", "asdf", "fsdcsdf", "x", "w", "asdf"]))
    """习题2
    输入一个字符串列表，返回满足以下条件的字符串列表：
    1.按字母顺序从小到大排序
    2.第一个字母是’x’的字符串排列在最前面"""


    def li2(li):
        liA = list()
        liB = list()
        li.sort()
        for i in li:
            if i[0] == "x":
                liA.append(i)
            else:
                liB.append(i)
        return liA + liB


    # print(li2(['mix', 'xyz', 'apple', 'xanadu', 'aardvark']))
    """
    习题3
    输入一个非空的元组列表，返回按列表中元组的最后一个元素从小到大排序后的元组列表
    例如：输入：[(1, 7), (1, 3), (3, 4, 5), (2, 2)]
    应该返回：[(2, 2), (1, 3), (3, 4, 5), (1, 7)]
    提示：使用自定义键 = 函数从每个元组提取最后一个元素。
    """


    def li3(li):
        for i in range(len(li)):
            for j in range(len(li) - i - 1):
                print(str(i) + "---" + str(j))
                if li[j][-1] > li[j + 1][-1]:
                    li[j], li[j + 1] = li[j + 1], li[j]
        return li


    # print(li3([(1, 3), (3, 2), (2, 1),(5, 8), (3, 45), (2, 2)]))
    """
    习题4
    输入一个数字列表，将所有相邻且相同的元素去重保留一个元素后返回
    例如：输入[1, 2, 2, 3] 返回 [1, 2, 3]；输入[1, 1, 2, 2, 3, 3, 3] 返回 [1, 2, 3]
    新建一个列表或者修改原来的列表返回均可。
    """


    def li4(li):
        li2 = list()
        li3 = set(li)
        li2.extend(li3)
        return li2


    # print(li4([123, 123, 123, 123, 345, 345, 345, 567, 567, 567]))
    """
    习题5
    给定两个按递增顺序排序的列表,创建并返回一个合并的按排序排列的所有元素的列表。
    例如输入 [‘aa’, ‘xx’, ‘zz’], [‘bb’, ‘cc’]，应该返回[‘aa’, ‘bb’, ‘cc’, ‘xx’, ‘zz’]
    希望你提供的解决方案在“线性”时间内工作，使两个列表都可以一次完成。
    """
    # reverse -- 排序规则，reverse = True 降序， reverse = False 升序（默认）。


    def li5(li1, li2):
        a = li1 + li2
        a.sort()
        return a


    # print(li5(['aa', 'xx', 'zz'], ['bb', 'cc']))

    """
    习题1
    输入一个字符串s，返回由字符串的最前面两个字母和最后两个字母组成的字符串。
    例如： ‘spring’ 返回 ‘spng’， ‘is’ 返回 ‘is’
    当输入的字符串长度小于2时，返回空字符串
    """


    def li6(s):
        if len(s) < 2:
            return "hehe"
        else:
            a = s[0] + s[1] + s[-2] + s[-1]
            return a


    # print(li6("asdvearvasdf"))

    """
    习题2
    输入一个字符串s， 返回满足以下条件的字符串
    1.找出与字符串的第一个字母相同的字母，把它们替换成 ‘*’，除了第一个字母本身以外
    例如: 输入’babble’， 返回 ‘ba**le’
    提示：使用 s.replace(stra, strb) 函数，可以将字符串 s 中的所有 子字符串stra 替换为 子字符串strb
    """


    def li7(s):
        a = s[0]
        b = s.replace(s[0], "*")
        c = b.replace("*", a, 1)

        # st=s[0]
        # for i in range(1,len(s)):
        #     if s[0] == s[i]:
        #         st+="*"
        #     else:
        #         st+=s[i]
        return c


    print(li7("asdfvsdsgaaasef"))

    """
    习题3
    输入字符串 a 和 b， 返回添加以下条件的字符串
    1.使用空格把两个字符串分隔后合并成一个字符串
    2.交换两个字符串的最前面的两个字母
    3.字符串 a 和 b 的长度都大等于2
    例如：
    ‘mix, pod’ -> ‘pox mid’
    ‘dog’, ‘dinner’ -> ‘dig donner’
    """


    def li8(a, b):
        if len(a) < 2 or len(b) < 2:
            return "长度不够"
        else:
            i = a[0]
            j = b[0]
            x = a.replace(a[0], j, 1)
            y = b.replace(b[0], i, 1)
            return x + " " + y


    # print(li8("asefs", "zsef"))

    """
    习题4
    输入一个字符串，返回满足以下条件的字符串
    如果字符串长度大等于3，添加 ‘ing’ 到字符串的末尾
    如果字符串是以 ‘ing’ 结尾的，就在末尾添加 ‘ly’
    如果字符串长度小于3，返回原字符串
    """


    def li9(a):
        if len(a) >= 3 and a[-3:] != "ing":
            a += "ing"
        elif len(a) < 3:
            return a
        if a[-3:] == "ing":
            a += "ly"
        return a

    # print(li9("ing"))

    # for i in range(-9, 0):
    #     for j in range(1, 10):
    #         if (j == i * (-1)):
    #             print(j, "*", i * (-1), "=", i * j * (-1))
    #             break
    #         else:
    #             if (i * j * (-1) > 9):
    #                 print(j, "*", i * (-1), "=", i * j * (-1), end="  ")
    #             else:
    #                 print(j, "*", i * (-1), "=", i * j * (-1), end="   ")

    # for i in range(1, 10):
    #     for j in range(1, i + 1):
    #         print(f"{j}*{i}={j * i}", end="\t")
    #     print()
    # print("-" * 88)
    #
    # for i in range(-9, 0):
    #     for j in range(1, 10):
    #         if j == i * -1:
    #             print(f"{j}*{i * -1}={j * i * -1}", end="\t")
    #             break
    #         else:
    #             print(f"{j}*{i * -1}={j * i * -1}", end="\t")
    #     print()
